1 InnoDB存儲引擎
InnoDB存儲引擎支持事務,是面向在線事務處理方面的應用,支持行鎖、外鍵,支持類似Oracle的非鎖定讀,默認情況讀取操作不會產生鎖,在MySQL5.1版本之后被設定成默認存儲引擎,此前是MyISAM
InnoDB存儲引擎將數據放在一個邏輯表空間,由InnoDB自身進行管理,將每個InnoDB存儲的表單獨放在一個獨立的ibd文件中,同樣也可以使用裸設備(row disk)建立表空間
InnoDB使用多版本并發控制(MVCC)獲得高并發性,實現了SQL標準的4種隔離級別,默認使用的是REPEATABLE READ(可重復讀)級別,此外還提供了插入緩沖、預讀、二次寫、自適應哈希索引、預讀等高性能和高可用的功能
針對表數據的存儲,InnoDB存儲引擎采用了聚集(clustered)的方式,每張表的存儲按照主鍵的順序存放,如果沒有顯式地指定主鍵,InnoDB將為每一行生成一個6字節的ROWID作為主鍵
? ??
1 InnoDB存儲引擎
InnoDB存儲引擎支持事務,是面向在線事務處理方面的應用,支持行鎖、外鍵,支持類似Oracle的非鎖定讀,默認情況讀取操作不會產生鎖,在MySQL5.1版本之后被設定成默認存儲引擎,此前是MyISAM
InnoDB存儲引擎將數據放在一個邏輯表空間,由InnoDB自身進行管理,將每個InnoDB存儲的表單獨放在一個獨立的ibd文件中,同樣也可以使用裸設備(row disk)建立表空間
InnoDB使用多版本并發控制(MVCC)獲得高并發性,實現了SQL標準的4種隔離級別,默認使用的是REPEATABLE READ(可重復讀)級別,此外還提供了插入緩沖、預讀、二次寫、自適應哈希索引、預讀等高性能和高可用的功能
針對表數據的存儲,InnoDB存儲引擎采用了聚集(clustered)的方式,每張表的存儲按照主鍵的順序存放,如果沒有顯式地指定主鍵,InnoDB將為每一行生成一個6字節的ROWID作為主鍵
? ??
3 NDB存儲引擎
NDB是一種集群存儲引擎,類似Oracle的RAC share everything結構,但不同的是其使用share nothing的集群結構,因此能提高更高級別的高可用性。
NDB的特點是數據放置在內存中(5.1版本后可將非索引數據放在磁盤中),主鍵查找的速度極快,并可以通過添加NDB數據存儲節點(Data Node)線性的提高存儲性能,可以作為高可用、高性能的集群系統
注:NDB存儲引擎的連接操作是在MySQL數據庫層完成的,而不是在存儲引擎層,意味著需要較大的網絡開銷,因此查詢速度較慢
4 Memory存儲引擎
Memory將數據存放在內存中,如果數據庫重啟或崩潰,所有數據將丟失,適合用于存儲臨時數據的臨時表以及數據倉庫中的維度表,默認使用哈希索引
該引擎存在一些限制,比如只支持行鎖,并發性能差,不支持TEXT和BLOB列類型,還有存儲變長字段是是按照定長方式進行的,存在內存浪費的問題。若存放結果集時,中間結果集的大小大于Memory存儲引擎表的容量設置,或存在TEXT或BLOB字段,MySQL會將其轉化為MyISAM存儲引擎放在磁盤,因MyISAM不緩存數據文件,因此產生的臨時表的性能會有損失
5 Archive存儲引擎
Archive存儲引擎只支持insert和select操作,從MySQL5.1之后支持索引,使用zlib算法壓縮數據行后存儲,壓縮率可達到1:10,適用于存儲歸檔數據,并使用行鎖實現高并發的寫入操作
6 Federated存儲引擎
Federated存儲引擎不存放數據,用于指向一臺遠程MySQL數據庫服務器的表,類似SQL Server的鏈接服務器與Oracle的透明網關,不同的是Federated存儲引擎只支持MySQL數據表,不支持異構數據表
7 Maria存儲引擎
Maria存儲引擎是新開發的引擎,目標是取代原有的MyISAM存儲引擎,成為MySQL的默認存儲引擎,特點是緩存數據,索引數據,行鎖設計,提供MVCC功能,支持事務和非事務安全的選項支持,以及更好的BLOB字符類型的處理性能